package leetcode_100;

/**
 *@author 周杨
 *AddBinary_67 二进制加法
 *describe: 利用数组保存计算结果 哨兵保存当前进位信息 AC 92%
 *2018年5月12日 下午2:10:18 
 */
public class AddBinary_67 {

	public static void main(String[] args) {
		AddBinary_67 test=new AddBinary_67();
		System.out.println(test.addBinary("1010", "1011"));

	}
	
	public String addBinary(String a, String b) {
		int l1=a.length(),l2=b.length();
		int [] res=new int[Math.max(l1,l2)];
		boolean flag=false;
		int index=res.length-1;
		while(index>=0) {
			int result=(l1>0?a.charAt(l1-1)-'0':0)+(l2>0?b.charAt(l2-1)-'0':0);
			if(result==0) {
				res[index]=(flag?1:0);
				flag=false;
			}
			else if(result==1) {
				res[index]=flag?0:1;
				//flag=flag?true:false;//flag其实就是不变
			}
			else {//2
				res[index]=flag?1:0;
				flag=true;
			}
			--index;
			--l1;
			--l2;
		}
		StringBuffer sb=new StringBuffer();
		for(int i:res)
			sb.append(i);
		if(flag)
			return "1"+sb.toString();
		return sb.toString();
    }

}
